Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

rache

Package Overview
Dependencies
Maintainers
0
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rache

Random-eviction cache

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
531
decreased by-52.29%
Maintainers
0
Weekly downloads
 
Created
Source

Rache

A random-eviction cache which imposes a global cache-size limit on all the caches derived from it.

Useful when you have many caches and want to limit their memory usage as a whole, instead of per cache.

The get and set operations as well as delete (and cache eviction) take constant time.

Install

npm i rache

Usage

const Rache = require('rache')

const cache = new Rache({ maxSize: 3 })
const cache2 = cache.sub()
const cache3 = cache.sub()

cache.set('key', 'value')
cache2.set('key', 'otherValue')
cache3.set('some', 'thing')

// cache 1 is a separate cache from cache2 and cache3
console.log('cached:', cache.get('key')) // 'value'

// But they share the same global size
console.log(cache.globalSize, 'of', cache.maxSize) // 3 of 3

cache.set('key2', 'another value')
// The cache was full, so one of the existing 3 entries got evicted

console.log(cache.globalSize, 'of', cache.maxSize) // 3 of 3

API

const cache = new Rache({ maxSize=65536 })

Create a new cache.

maxSize is the maximum amount of entries globally, across this cache and all derived caches (derived with cache.sub() or Rache.from(cache)).

const subCache = cache.sub()

Create a new cache which shares the global memory limit with the original cache.

const aCache = Rache.from(cache?)

Create a new rache instance.

If an existing cache is passed in, it will create a sub-cache (equivalent to aCache = cache.sub()).

Otherwise (if no cache or a falsy value is passed in), it will create a new cache (equivalent to aCache = new Rache()).

cache.globalSize

The current amount of entries across all caches.

cache.maxSize

The maximum amount of entries across all caches.

cache.size

The amount of entries in this specific cache.

cache.set(key, value)

Set the key to the given value.

If the global cache size was at the limit, a random old entry is evicted from the cache.

cache.delete(key)

Delete the entry corresponding to key, if any.

Returns true if an entry was deleted, false otherwise.

cache.get(key)

Returns the value corresponding to the given key, or undefined if there is none.

cache.keys()

Returns an iterator over the keys of this particular cache.

cache.values()

Returns an iterator over the values of this particular cache.

cache.clear()

Clear all entries from this particular cache.

After clearing, new entries can again be added to the cache.

cache.destroy()

Destroys the cache. The cache should no longer be used after it has been destroyed.

FAQs

Package last updated on 04 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc